package com.quick.springbootquicky.pojo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.quick.springbootquicky.annotation.State;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.groups.Default;
import lombok.Data;
import org.hibernate.validator.constraints.URL;

import java.util.Date;

/**
 * 文章具体内容信息
 */
@Data
public class Article {

    @NotNull(groups =Update.class)
    private Integer id;// 'ID',
    @NotEmpty
    @Pattern(regexp="^\\S{1,100}$")
    private String title;//'文章标题',
    @NotEmpty
    private String content;//'文章内容',
    private Integer createUser;//'创建人id',
    @NotNull
    @URL//必须符合url形式才行
    private String coverImg;// '文章封面',
    @State
    private String state;// '已发布或草稿',
    @NotNull
    private Integer categoryId;// '分类id',
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") //日期格式输出
    private Date createTime;// '创建时间',
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") //日期格式输出
    private Date updateTime;//'更新时间',

    private String categoryName;

    /**
     * 检验分组：方便区别哪个方法不用校验哪些参数
     * 不添加分组就是默认不管是新增还是修改都要校验
     * 前提是在调用的方法中加上@Validated，如：@Validated(Category.Update.class),表明只有在update组中才会校验这个参数是否有值
     */
    public interface Add extends Default {}
    public interface Update extends Default{}
}
